package com.cv.platform.service.favourite;

import com.cv.framework.common.pojo.PageResult;
import com.cv.platform.controller.platform.favourite.vo.CvVideoFavouriteRespVO;
import com.cv.platform.controller.platform.favourite.vo.CvVideoFavouriteSaveReqVO;
import com.cv.platform.controller.platform.favourite.vo.CvVideoFavouriteReqVO;
import com.cv.platform.dal.es.index.video.CvVideoEntity;

import java.util.List;

/**
 * 视频收藏业务层接口
 *
 * @author Charles_XDXD
 */
public interface CvVideoFavouriteService {

    /**
     * 根据用户编号获取所有视频收藏
     *
     * @param userId 用户编号
     * @return 视频数据
     */
    List<CvVideoEntity> getAllVideoFavouriteByUserId(Long userId);

    /**
     * 判断是否已收藏
     *
     * @param videoId 视频编号
     * @return 是否已收藏
     */
    Boolean getIsVideoFavourite(Long videoId);

    /**
     * 保存收藏夹信息
     *
     * @param reqVO 收藏夹信息保存对象
     */
    void saveVideoFavourite(CvVideoFavouriteSaveReqVO reqVO);

    /**
     * 删除收藏夹信息
     *
     * @param videoId 视频编号
     */
    void deleteVideoFavourite(Long videoId);

    /**
     * 分页搜索收藏夹信息
     *
     * @param reqVO 分页查询请求对象
     * @return 分页数据
     */
    PageResult<CvVideoFavouriteRespVO> getVideoFavouritePage(CvVideoFavouriteReqVO reqVO);

    /**
     * 统计总收藏数
     *
     * @return 总收藏数
     */
    Integer getTotalCollectionCount();

}
